Load balancing, or multi-pathing, is an attempt to balance traffic across a network by providing multiple paths for the traffic. Load balancing eases capacity planning, helps absorb traffic surges by dispersing the traffic across multiple paths, and allows better resilience by offering alternative paths in the event that a link or node fails. As providers scale their networks, they may use a variety of techniques to achieve greater bandwidth between nodes. Two commonly used techniques are Link Aggregation Group (“LAG”) and Equal Cost Multi-Path (“ECMP”). LAG is used to bond together several physical circuits between two adjacent nodes so they appear to higher-layer protocols as a single, higher-bandwidth “virtual” pipe. ECMP is used between two nodes separated by one or more hops, to allow load balancing over several shortest paths in the network. This is typically accomplished by arranging IGP metrics such that there are several equal cost paths between source-destination pairs. LAG and ECMP may, and often do, coexist in differing parts of a provider's network.
It is important when performing load balancing to map packets belonging to the same flow to the same path. To meet this requirement, a node may use certain fields, or “keys”, within a packet's header as input to a load balancing function that selects the path for all packets of the flow. For MPLS networks, finding useful keys in a packet for purposes of load balancing may be a challenge, as in many cases MPLS encapsulation may require a fairly deep inspection of packets to find these keys at transit nodes. One way to eliminate the need for deep packet inspection is to have the ingress node of an MPLS Label Switched Path extract the appropriate keys from a given packet, input them into its load balancing function, and then place the result in an “Entropy Label” (“EL”) as part of the MPLS label stack it pushes onto the packet. The entire label stack of the MPLS packet can then be used by transit nodes to perform load balconing, as the EL introduces the right level of “entropy” into the label stack.
An MPLS EL is designed to act as a load balancing factor in an MPLS network, such as a service provider network. An ingress Provider Edge (“PE”) node looks into traffic from a Customer Edge (“CE”) node and then computes and pushes an EL together with an EL Indicator (“ELI”) to each packet. The EL will be recognized and used by other provider routers for load balancing. A drawback to this technique is that the combination of EL and ELI adds eight bytes of overhead to every packet. When ECMP and/or LAG exists on the PE node to PE node path, the overhead is worthy and should be tolerated; however, when there is no ECMP or LAG on the PE node to PE node path, the overhead is a waste of bandwidth and CPU time.